﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Data;

namespace Hotel_G11
{
    /// <summary>
    /// Summary description for WebService
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class WebService : System.Web.Services.WebService
    {
        [WebMethod(EnableSession = true)]
        public bool DangNhap(string username, string password)
        {
            string tk;
            //Dang nhap
            G11_KhachSanEntities entity = new G11_KhachSanEntities();
            try
            {
                tk = entity.sp_DangNhap(username, password).First();
                if (tk.Length > 0)
                {
                    Session["TK"] = tk;
                    return true;
                }
                return false;
            }
            catch (Exception e)
            {
                return false;

            }
        }

        [WebMethod]
        public List<HangPhong> LayDSHangPhong()
        {
            G11_KhachSanEntities entity = new G11_KhachSanEntities();
            var res = entity.sp_LayDSHangPhong();
            List<HangPhong> list = new List<HangPhong>();
            list = res.ToList<HangPhong>();
            return list;
        }
 
        [WebMethod]
        public List<LoaiPhong> LayDSLoaiPhongTheoHangPhong(String MaHangPhong)
        {
            List<LoaiPhong> l = new List<LoaiPhong>();
            G11_KhachSanEntities entity = new G11_KhachSanEntities();
            var res = entity.sp_LayDSLoaiPhongTheoHangPhong(MaHangPhong);
            l = res.ToList<LoaiPhong>();
            return l;
        }

        [WebMethod]
        public List<LoaiHangPhong> LayDSLoaiHangPhongHoTro(DateTime NgayBD, DateTime NgayKT)
        {
            List<LoaiHangPhong> list = new List<LoaiHangPhong>();
            if (NgayBD > NgayKT)
                return list;
            G11_KhachSanEntities entity = new G11_KhachSanEntities();
            var res = entity.sp_LayDSLoaiHangPhongHoTro(NgayBD, NgayKT);
            list = res.ToList<LoaiHangPhong>();
            return list;
            // Trả về danh sách loại hạng phòng mà khách sạn có hỗ trợ
            //Trong class LoaiHangPhong có mã loại phòng và mã hạng phòng kèm theo số luợng
            //Số lượng trong hàm này chính là số lượng phòng còn trốn trong khoảng thời gian NgayBD và NgayKT
        }

        [WebMethod]
        public List<LoaiPhong> LayDSLoaiPhong()
        {
            G11_KhachSanEntities entity = new G11_KhachSanEntities();
            var res = entity.sp_LayDSLoaiPhong();
            List<LoaiPhong> list = new List<LoaiPhong>();
            list = res.ToList<LoaiPhong>();
            return list;
        }

        [WebMethod]
        public int LaySoLuongPhongTrong(string maLoaiPhong, string maHangPhong, DateTime ngayBD, DateTime ngayKT)
        {
            G11_KhachSanEntities entity = new G11_KhachSanEntities();
            int soLuong = 0;
            if (ngayBD > ngayKT)
                return soLuong;
            soLuong = entity.sp_LaySLPhongTrong(maLoaiPhong, maHangPhong, ngayBD, ngayKT).FirstOrDefault().GetValueOrDefault();
            return soLuong;
        }

        [WebMethod]
        public int LayGiaThanh(string maLoaiPhong, string maHangPhong)
        {
            int gia = -1;
            G11_KhachSanEntities entity = new G11_KhachSanEntities();
            gia = entity.sp_LayGiaThanh(maLoaiPhong, maHangPhong).FirstOrDefault().GetValueOrDefault();
            return gia;
        }

        [WebMethod(EnableSession = true)]
        public string DatPhong(List<LoaiHangPhong> list, DateTime ngayBD, DateTime ngayKT, int soLuong)
        {
            string maDP = ".";

            if (ngayBD > ngayKT)
                return maDP;
            G11_KhachSanEntities entity = new G11_KhachSanEntities();
            //IDbTransaction trans = null;

            try
            {
                entity.Database.Connection.Open();
                //trans = entity.Database.Connection.BeginTransaction();
                string maCT = entity.sp_TKtoCT(Session["TK"].ToString()).FirstOrDefault();

                maDP = entity.sp_DatPhong(maCT, "", ngayBD, ngayKT, soLuong).FirstOrDefault();

                for (int i = 0; i < list.Capacity; i++)
                {
                    entity.sp_ThemPhongDat(list[i].maHangPhong, list[i].maLoaiPhong, list[i].soLuong, ngayBD, ngayKT, maDP);
                }
            }
            catch (Exception ex)
            {
                //trans.Rollback();
                maDP = ".";
            }
            finally
            {
                entity.Database.Connection.Close();
            }
            return maDP;
        }
    }
}
